這兩天把連線數完成啦~這次來解決在輸入數字旁邊的格子沒有輸入任何數字時,不會有任何反應的問題。
先新增一個editText,再來設定只能輸入數字,以及設定輸入數字的位數為3位數,然後在dialog裡面的setView設定自己取的editText的名稱,再來設定訊息。
裡面的訊息我也設置在res/values/strings裡面
<string name="inputRange">輸入範圍:</string>
<string name="rangeOne">2x2~3x3=1~30</string>
<string name="rangeTwo">4x4~10x10=1~當前層數x10</string>
然後記得加到 checkInputNumber() 裡面:
private void checkInputNumber() {
String strBingoNumber = m_binding.etInput.getText().toString();
if (m_binding.etInput.getText().toString().equals("")) {
showDialogInputNumber();
} else if (Integer.parseInt(strBingoNumber) > m_iSize * 10 || Integer.parseInt(strBingoNumber) < 1) {
showDialogOverRange();
} else {
checkInputNumberRepeat();
}
}
這樣就可以跳出輸入框來啦~~
再來就是把輸入的數字印進去按鈕裡,以及儲存到陣列裡。
private void showDialogInputNumber(){
EditText etEditText = new EditText(MainActivity.this);
etEditText.setInputType(InputType.TYPE_CLASS_NUMBER); //設定editText只能輸入數字
etEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(3)}); //設定editText輸入字數
AlertDialog textTips = new AlertDialog.Builder(MainActivity.this)
.setTitle(R.string.inputNumber)
.setView(etEditText)
.setMessage(getBaseContext().getString(R.string.inputRange) +"\n"+
getBaseContext().getString(R.string.rangeOne)+"\n"+
getBaseContext().getString(R.string.rangeTwo))
.setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String strEdittext =etEditText.getText().toString();
m_alBingoButtons.get(m_iNowIndex).getButton().setText(strEdittext.replaceAll("^(0+)", ""));
m_alBingoButtons.get(m_iNowIndex).saveNumber(Integer.parseInt(strEdittext.replaceAll("^(0+)", "")));
}
}).create();
textTips.show();
}
畫面:
目前可以順利的把數字印在按鈕上面了,但目前的輸入框並不會去判斷範圍,所以之後要來設定範圍以及數字是否重複那些東西,以及如果沒有輸入東西就按確定app是會閃退的,因為沒有給值,然後又有把editText轉成其他的資料型態,所以他會不知道要把什麼東西轉型態,所以就掛掉了,所以下一篇會來處理這些問題。